﻿/**
 *\file sabot.h
 *\author Raphaël Diana
 */
#ifndef SABOT_H_INCLUDED
#define SABOT_H_INCLUDED
#include "carte.h"
#include "liste.h"

/**\struct Sabot sabot.h*/
typedef struct sSabot
{
    Carte* jeuCarte;
    Liste* talon;
} Sabot;


/** \brief Crée un Sabot.
 *
 * \param aucun
 * \return pointeur sur Sabot
 *
 */

Sabot* initSabot();

/** \brief Détruit le Sabot.
 *
 * \param double pointeur sur Sabot
 * \return vide
 *
 */

void detruitSabot(Sabot**);

/** \brief Crée un jeu de carte.
 *
 * \param aucun
 * \return pointeur sur Carte
 *
 */

Carte* creerJeuCarte();

/** \brief Libère le tableau de Carte.
 *
 * \param double pointeur sur Carte
 * \return vide
 *
 */

void testamentJeuCarte(Carte**);

/** \brief Rempli une Liste avec des Carte.
 * Remplissage aléatoire.
 * \param pointeur sur Carte
 * \return pointeur sur Liste
 *
 */

Liste* remplirTalon(Carte*);

/** \brief Libère le talon.
 * Fait appel à testamentListe.
 * \param pointeur sur Liste
 * \return vide
 *
 */

void testamentTalon(Liste*);

/** \brief Tire un Carte du talon.
 * Utilise retireEnTete
 * \param pointeur sur Liste
 * \return pointeur sur Carte
 *
 */

Carte* tirerCarte(Liste*);

/** \brief Accède à une Carte de la Liste.
 * Fait appel à getInfo.
 * \param pointeur sur Liste
 * \param entier non-signé
 * \return pointeur sur Carte
 *
 */

Carte* getCarte(Liste *, unsigned int);

/**\brief affiche le talon*/
void afficherTalon(Liste*);

#endif
